C 语言文件读写 |
您所在的位置:网站首页 › c语言 文件读取 数组 › C 语言文件读写 |
C 标准库 C 语言嵌套结构体
C 语言文件读写
在本教程中,您将学习如何在C语言中处理文件。您将通过示例学习在C语言中使用fprintf()、fscanf()、fread()、fwrite()、fseek()等处理标准I/O。 文件是计算机存储设备中用于存储数据的容器。 为什么需要文件?当程序终止时,所有数据都会丢失。即使程序终止,存储在文件中也会保留您的数据。 如果必须输入大量数据,则将花费大量时间来全部输入。 但是,如果您有一个包含所有数据的文件,则可以使用C中的一些命令方法轻松地访问文件的内容。 您可以轻松地将数据从一台计算机移动到另一台计算机,而无需进行任何更改。 文件类型处理文件时,您应该了解两种类型的文件: 文本文件 二进制文件 1.文本文件文本文件是普通的.txt文件。您可以使用任何简单的文本编辑器(例如记事本)轻松创建文本文件。 打开这些文件时,您将以纯文本形式看到文件中的所有内容。您可以轻松地编辑或删除内容。 它们以最少的维护工作,易于阅读,提供最少的安全性并占用更大的存储空间。 2.二进制文件二进制文件主要是计算机中的.bin文件。 它们不是以纯文本格式存储数据,而是以二进制格式(0和1)存储数据。 与文本文件相比,它们可以容纳更多数据,不易读取,并提供更好的安全性。 文件操作在C中,您可以对文件执行四个主要操作: 创建一个新文件 打开现有文件 关闭文件 读取信息并将信息写入文件 处理文件处理文件时,需要声明文件类型的指针。文件和程序之间的通信需要此声明。 FILE *fptr;打开文件-用于创建和编辑使用stdio.h头文件中定义的fopen()函数打开文件。 在标准I / O中打开文件的语法为: ptr = fopen("fileopen","mode");例如, fopen("E:\\cprogram\\newprogram.txt","w"); fopen("E:\\cprogram\\oldprogram.bin","rb");假设该文件newprogram.txt在路径E:\cprogram中不存在。第一个函数创建一个名为newprogram.txt的新文件,并按照'w'模式打开该文件进行写入。 写入模式允许您创建和编辑(覆盖)文件的内容。 现在,假设第二个二进制文件oldprogram.bin存在于路径E:\cprogram中。第二个函数打开现有文件,以二进制模式'rb'读取。 读取模式仅允许您读取文件,而不能写入文件。 标准I / O中的打开模式模式模式的含义文件不存在期间r以只读方式打开。如果文件不存在,则fopen()返回NULL。 rb打开以二进制模式读取。 如果文件不存在,则fopen()返回NULL。w打开文本文件,允许写入文件。打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。 在这里,您的程序会从文件的开头写入内容。 如果文件存在,则该会被截断为零长度,重新写入。 wb打开文件以二进制方式写入。 如果文件存在,其内容将被覆盖。 如果文件不存在,将创建它。a打开进行追加。 数据添加到文件末尾。如果文件不存在,将创建它。 ab打开以二进制方式追加。 数据添加到文件末尾。 如果文件不存在,将创建它。r+开放供阅读和写作。如果文件不存在,则fopen()返回NULL。 rb+打开以二进制方式读取和写入。 如果文件不存在,则fopen()返回NULL。w+打开一个文本文件,允许读写文件如果文件存在,其内容将被覆盖。 如果文件不存在,将创建它。 wb+打开以二进制方式读取和写入。 如果文件存在,其内容将被覆盖。 如果文件不存在,将创建它。a+打开以阅读和追加。如果该文件不存在,它将被创建。 ab+打开以二进制模式读取和追加。 如果文件不存在,将创建它。关闭文件读取/写入后,应关闭文件(文本文件和二进制文件)。 使用fclose()函数可以关闭文件。 fclose(fptr);在这里,fptr是与要关闭的文件关联的文件指针。 读取和写入文本文件为了读取和写入文本文件,我们使用fprintf()和fscanf()函数。 它们只是printf()和scanf()的文件版本。 唯一的区别是fprint()和fscanf()需要指向结构FILE的指针。 示例1:写入文本文件#include #include int main() { int num; FILE *fptr; // 如果您使用的是MacOS或Linux,请使用正确的路径 fptr = fopen("C:\\program.txt","w"); if(fptr == NULL) { printf("Error!"); exit(1); } printf("Enter num: "); scanf("%d",&num); fprintf(fptr,"%d",num); fclose(fptr); return 0; }该程序从用户那里获取一个号码并将其存储在文件中program.txt。 编译并运行该程序后,您可以看到program.txt在计算机的C驱动器中创建的文本文件。打开文件时,您可以看到输入的整数。 示例2:从文本文件读取#include #include int main() { int num; FILE *fptr; if ((fptr = fopen("C:\\program.txt","r")) == NULL){ printf("Error! opening file"); //如果文件指针返回NULL,则程序退出。 exit(1); } fscanf(fptr,"%d", &num); printf("Value of n=%d", num); fclose(fptr); return 0; }该程序读取program.txt文件中存在的整数并将其打印到屏幕上。 如果您从示例1成功创建了文件,运行此程序将为您提供输入的整数。 其他函数,如fgetchar(),fputc()等,可以以类似的方式使用。 读写二进制文件在二进制文件的情况下,fread()和fwrite()函数用于分别读取和写入磁盘上的文件。 写入二进制文件要写入二进制文件,需要使用fwrite()函数。这些函数采用四个参数: 要写入磁盘的数据地址 要写入磁盘的数据大小 此类数据的数量 指向要写入的文件的指针。 fwrite(addressData, sizeData, numbersData, pointerToFile);示例3:使用fwrite()写入二进制文件#include #include struct threeNum { int n1, n2, n3; }; int main() { int n; struct threeNum num; FILE *fptr; if ((fptr = fopen("C:\\program.bin","wb")) == NULL){ printf("Error! opening file"); // 如果文件指针返回NULL,则程序退出。 exit(1); } for(n = 1; n |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |